{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Projeto da UNIDADE III\n",
    "\n",
    "Os alunos da disciplina Comunicações Móveis foram chamados a prestar consultoria para uma fabricante de infraestrutura de redes de comunicação. O fabricante requisitou um estudo sobre estratégias de controle de potência para o sistema celular 3G.\n",
    "\n",
    "\n",
    "Existem 5 modos de controle de potência a serem estudados e várias questões foram levantadas. Cada aluno da disciplina deverá entregar ao cliente (fabricante) um relatório técnico sobre o que for desenvolvido. O trabalho poderá render ao aluno um contrato de longo prazo para desenvolver outras consultorias na área de telecomunicações. Então, o cliente avaliará a consultoria nas seguintes dimensões: \n",
    "\n",
    "\n",
    "> (i) Código gerado: organização, comentários e tempo de execução; \n",
    "\n",
    "> (ii) Vídeo explicativo de apresentação com gráficos, discussões e direcionamentos para a equipe de engenharia do cliente. \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## O que deve ser entregue\n",
    "\n",
    "> (i) Código fonte do programa em Matlab (bem comentado). Outra linguagem de programação pode ser utilizada desde que o código disponibilizado pelo cliente seja inteiramente portado para a outra linguagem;\n",
    "\n",
    "> (ii) Vídeo explicativo de apresentação com conteúdo técnico do trabalho, envolvendo a modelagem dos protótipos e a discussão dos resultados. O vídeo é limitado a 10 minutos (incluindo as duas partes do projeto). Uma pontuação importante será direcionada a apresentação e discussão dos gráficos. Se concentre na apresentação da modelagem (como foi feito), resultados e discussão. Não precisa apresentar a contextualização do trabalho, já que se trata de um vídeo com os resultados de um projeto descrito nesta página.\n",
    "\n",
    "A entrega deve conter um arquivo zip (ou uma pasta compartilhada com vicente.sousa@ufrn.br) com três pastas: \n",
    "\n",
    "> (i) code_part_1; \n",
    "\n",
    "> (ii) code_part_2; e \n",
    "\n",
    "> (iii) report, com a apresentação em pptx e o vídeo (ou o link para o vídeo). \n",
    "\n",
    "**Entrega de outra maneira valerá menos pontuação.** \n",
    "\n",
    "O fabricante poderá marcar uma reunião para conversar sobre a execução do projeto, detalhes sobre o código e do vídeo.\n",
    "\n",
    "O pedido do fabricante está materializado no documento de requisitos descrito abaixo.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Requisitos da consultoria\n",
    "\n",
    "**Objetivo:** modelar um sistema WCDMA (3G) por meio de um simulador sistêmico simplificado que leve em consideração a interferência co-canal no enlace reverso (Uplink) e a mobilidade do usuário. Criar um protótipo em software para modelagem do controle de potência em tais sistemas. Relatar o desempenho em termos de SINR, potência transmitida variando alguns parâmetros de entrada.\n",
    "\n",
    "A consultoria está dividida na duas partes descritas a seguir.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# O que deve ser implementado\n",
    "\n",
    "## Parte 1: Protótipo em software para modelagem da SINR do enlace reverso em um sistema WCDMA com uma camada de interferência co-canal e reuso 1\n",
    "\n",
    "\n",
    "* 1.\tConsidere um sistema de comunicação sem fio no qual a perda de percurso segue o modelo L = 129,4 + 35,2 log10(d), com d em km e L em dB. O desvanecimento de larga escala (sombreamento) é gaussiano de média zero e desvio padrão 8 dB. A potência do ruído é -106,98 dBm (já considerando a banda de 5MHz do WCDMA). A portadora tem frequência de 1950 MHz. \n",
    "* 2.\tConsidere um sistema celular modelado como células hexagonais com a antena posicionada no centro do hexágono. Considere antenas omnidirecionais ideais de ganho igual a 16 dBi. Posicione usuários uniformemente na célula. Cada usuário tem um terminal com potência máxima de transmissão de 21 dBm e todos os usuários estão transmitindo com toda potência disponível.  Considere um sistema com reuso 1, no qual os usuários dentro de uma célula não interferem uns com os outros (WCDMA com códigos ortogonais perfeitamente sincronizados). Contudo, interferem com todos os usuários de células vizinhas. O sistema deve seguir o layout mostrado na figura a seguir.\n",
    "<p align=\"center\">\n",
    "  <img src=\"./FIGS/HD_05/grid.png\" width=\"500\"/>\n",
    "</p>\n",
    "\n",
    "* 3.\tTenha cuidado com usuários muito próximo das ERBs. Garanta um raio de segurança de 10m, i.e., para usuário com distância menor que essa, a potência recebida será a mesma e igual à potência no ponto de 10m.\n",
    "* 4.\tO número de usuários por célula deve ser um parâmetro de entrada (carga do sistema), bem como o raio do hexágono (raio celular).\n",
    "* 5.\tPara o teste dessa parte do protótipo de software, faça uma simulação sistêmica estática (usuários parados) baseada na estratégia de Monte Carlo. As métricas finais são resultantes da média de 1000 repetições (drops) do experimento com usuários distribuídos em posições diferentes (posições aleatórias em cada drop). O programa deve calcular a potência recebida, a interferência e a Eb/No de todos os usuários da célula central (somente da célula central). (Eb/No = SINR * SF). Considere SF=128.\n",
    "* 6.\tOs usuários das células adjacentes (células interferentes) devem ser posicionados somente para gerar interferência. \n",
    "* 7.\tOs usuários devem estar transmitindo com sua potência máxima, i.e., sem controle de potência.\n",
    "* 8.\tOs seguintes gráficos devem ser feitos: \n",
    "  * 8.1.\tFigura 1: Grid de simulação com desenho das células hexagonais e usuários posicionados com cores diferentes em cada célula (para construir esse gráfico considere carga alta, e.g. 1000 usuários, para ilustrar bem o posicionamento). A figura é similar a:\n",
    " <p align=\"center\">\n",
    "  <img src=\"./FIGS/HD_05/grid_users.png\" width=\"700\"/>\n",
    " </p>\n",
    "   \n",
    "  * 8.2.\tFiguras 2, 3 e 4: Para o sistema com raios de cobertura iguais a 50, 100, 500, 2000 e 10000 metros, considerando uma carga de 200 usuários por célula, construir as seguintes CDFs: da Eb/No (figura 2); da potência transmitida (figura 3); da potência recebida (figura 4). Na apresentação e no vídeo, discutir os seguintes pontos:\n",
    "    * 8.2.1.\tO que acontece com a Eb/No com a mudança de raio? Quais observações podem ser feitas com a comparação das curvas traçadas? O que acontece com os usuários próximos a estação base (qual a Eb/No desses usuários)? E com os usuários na borda da célula (qual a Eb/No desses usuários)? \n",
    "    * 8.2.2.\tO que acontece com a potência transmitida com a mudança de raio? Quais observações podem ser feitas com a comparação das curvas traçadas? \n",
    "    * 8.2.3.\tO que acontece com a potência recebida com a mudança de raio? Quais observações podem ser feitas com a comparação das curvas traçadas? O que acontece com os usuários próximos a estação base (qual a potência recebida desses usuários)? E com os usuários na borda da célula (qual a potência recebida desses usuários)?\n",
    "\n",
    "    * Por exemplo, para a potência recebida, as figuras são similares a:\n",
    "  <p align=\"center\">\n",
    "  <img src=\"./FIGS/HD_05/cdf_prx.png\" width=\"700\"/>\n",
    "  </p>\n",
    "  \n",
    "  * 8.3.\tFiguras 5 e 6: Para sistemas com raios de cobertura iguais a 50, 100, 500, 2000 e 10000 metros, considerando uma carga de 10 usuários por célula, fazer a CDF da Eb/No e da Potência Recebida. Comparar com os resultados do item anterior. Discutir os seguintes pontos:\n",
    "    * 8.3.1.\tQuais observações podem ser feitas comparando as curvas? \n",
    "    * 8.3.2.\tQual a formulação matemática que explica esse comportamento? Qual é a formulação e quais conclusões podemos tirar dela?\n",
    "\n",
    "  * 8.4.\tFiguras 7, 8 e 9: Para o sistema com raio de cobertura igual a 100 metros, variando a quantidade de usuários por célula em 10, 50, 200 e 1000, construir as seguintes CDFs: da Eb/No; da potência transmitida; e da potência recebida. No relatório, discutir os seguintes pontos:\n",
    "    * 8.4.1.\tO que acontece com a Eb/No com a mudança na quantidade de usuários por célula? Quais observações podem ser feitas com a comparação das curvas traçadas? O aumento no número de usuários afeta de maneira diferente usuários na borda da célula e usuários perto da ERB?\n",
    "    * 8.4.2.\tO que acontece com a potência recebida com a mudança no número de usuários? Quais observações podem ser feitas com a comparação das curvas traçadas? O aumento no número de usuários afeta de maneira diferente usuários na borda da célula e usuários perto da ERB?\n",
    "    * Por exemplo, para a Eb/No, as figuras são similares a:\n",
    "    <p align=\"center\">\n",
    "     <img src=\"./FIGS/HD_05/CDF_SINR.png\" width=\"700\"/>\n",
    "    </p>\n",
    "\n",
    "  * 8.5.\tPergunta 01: Determine o raio da célula para um critério de cobertura de 90%, i.e, 90% dos usuários estão com potência maior que a sensibilidade do receptor (use -121 dBm). Dica: analise gráficos de CDF da potência recebida para raios de 2 a 5 Km.\n",
    "  * 8.6.\tPergunta 02: O que pode ser afirmado sobre esse sistema ser limitado em capacidade ou em cobertura. Alguma observação nesse sentindo pode ser feita com esse estudo da variação do raio?\n",
    "\n",
    "O professor disponibilizará um arcabouço de código com os loops da simulação e o protótipo de cada função a ser gerada. Isso direcionará cada aluno a criar códigos com a mesma base (harmonização), os quais gerarão resultados que podem ser comparados. Um script que faz a maioria dos gráficos também será disponibilizado. \n",
    "\n",
    "**Requisito importante:** Os scripts podem ser mudados, mas seu protótipo deve ser mantido (nome, parâmetros de entrada, e parâmetros de saída).\n",
    "\n",
    "**Uma reunião para discussão de resultados preliminares ou modelagem pode ser marcada com o cliente a qualquer momento da implementação.**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Parte 2: Protótipo em software para modelagem do controle de potência do enlace reverso em um sistema WCDMA \n",
    "\n",
    "* 1.\tConsidere o sistema celular modelado na Parte 1. O raio de cobertura do sistema deve ser escolhido de acordo com o item 7.5 da parte 01, incluindo uma margem de 59% a mais para assegurar um compromisso entre cobertura e capacidade.\n",
    "* 2.\tModelar o controle de potência dinâmico por meio de uma simulação sistêmica semi-estática, na qual serão avaliados 1000 drops de 100 segundos. Cada drop é caracterizado pelo reposicionamento de todos os usuários. Considere duas situações, usuários com velocidade baixa (3 kmph) e usuários com velocidade alta (120 kmph). O tipo de mobilidade do usuário deve ser um parâmetro. A quantidade de drops e sua duração também devem ser parâmetros de entrada.\n",
    "* 3.\tNo sistema WCDMA, um frame de duração de 10 ms é dividido em 15 slots. Cada slot carrega um comando de controle de potência, isto é, a potência de cada usuário pode ser mudada a cada slot.\n",
    "* 4.\tA potência recebida, a potência transmitida e a Eb/No deve ser calcula em cada slot. Armazene a média dessas métricas de cada usuário, durante o tempo do drop. Armazene a média dessas métricas de cada usuário para os 1000 drops da simulação. Ao final você terá um vetor de 1000 vezes o número de usuários (para cada métrica).\n",
    "* 5.\tModele somente o pathloss e o shadowing como manifestações do canal rádio-móvel (de acordo com a Parte 1). Contudo, modele a mobilidade de maneira simplificada, considerando os usuários estáticos, mas variando o shadowing a cada distância de descorrelação de 5m. Calcule a distância percorrida por cada usuário com o passar do tempo e considerando sua velocidade;\n",
    "* 6.\tDeve ser guardado o vetor de Eb/No, potência transmitida e recebida por slot dos primeiros “n” usuários (n deve ser indicado em um parâmetro). Esse vetor servirá para fazer o gráfico da evolução desses parâmetros com o tempo. Faça esse procedimento somente para o primeiro drop (evitando gasto excessivo de memória);\n",
    "* 7.\tA potência inicial do usuário deve ser definida como na Parte 1.\n",
    "* 8.\tTenha cuidado com usuários muito próximo das ERBs. Garanta um raio de segurança de 10m, i.e., para usuário com distância menor que essa, a potência recebida será a mesma e igual à potência no ponto de 10m.\n",
    "* 9.\tO controle de potência rápido para cada usuário deve ser implementado da seguinte forma: \n",
    "  * 9.1.\tEm cada slot, a Eb/No do usuário deve ser medida e comparada com um valor alvo de 10 dB. (Eb/No = SINR * SF). Considere SF = 128.\n",
    "  * 9.2.\tA potência de transmissão do usuário deve ser aumentada se o valor de sua Eb/No for menor que a target.\n",
    "  * 9.3.\tA potência de transmissão do usuário deve ser diminuída se o valor de sua Eb/No for maior que a target. Considere um valor de potência mínima transmitida igual a -40 dBm. Usuários não devem transmitir com potência menor que essa. Tenha cuidado também em garantir que os usuários não desobedecem também a potência máxima de transmissão;\n",
    "  * 9.4.\tEle deve acontecer para todos os usuários (inclusive os das células interferentes), mas a mudança de potência só deverá ocorrer no slot seguinte, i.e., a mudança de potência deve ocorrer para todos os usuários ao mesmo tempo.\n",
    "* 10.\tDevem ser implementados os seguintes modos de controle de potência:\n",
    "  * 10.1.\tModo 0: sem controle de potência rápido. Potência sempre será igual a inicial.\n",
    "  * 10.2.\tModo 1: passo de controle fixo de 1 dB (aumenta ou diminui 1 dB)\n",
    "  * 10.3.\tModo 2: passo de controle fixo de 1 dB, mas controle variável que determina que só diminui potência se Eb/No > 0,7 Eb/NoTARGET \n",
    "  * 10.4.\tModo 3: passo de controle fixo de 1 dB, mas controle variável que determina que só diminui potência se Eb/No > 1,3 Eb/NoTARGET\n",
    "* 11.\tO simulador deve suportar a carga de usuários como parâmetro de entrada. As seguintes cargas deverão ser testadas: 10, 20, 30, 50 e 100 usuários por célula. \n",
    "* 12.\tOs seguintes gráficos devem ser feitos:\n",
    "  * 12.1.\tFiguras 1 e 2: Para os 5 primeiros usuários selecionados da célula central para uma carga de 10 usuários por célula e para os Modos 0 e 1 de controle de potência faça uma figura com os seguintes subplots:\n",
    "    * 12.1.1.\tSubplot 01: Potência de transmissão instantânea vs tempo. Uma linha para cada usuário;\n",
    "    * 12.1.2.\tSubplot 02: Potência de recepção instantânea vs tempo;\n",
    "    * 12.1.3.\tSubplot 03: Eb/No vs tempo;\n",
    "* Para fazer esses gráficos, você só precisa armazenar as métricas do primeiro drop!!! O gráfico deve se parecer com a figura a seguir:\n",
    " <p align=\"center\">\n",
    "  <img src=\"./FIGS/HD_05/prx_time.jpg\" width=\"1000\"/>\n",
    " </p>\n",
    " \n",
    "  * Na apresentação e no vídeo, discuta as seguintes perguntas: O que pode ser concluído das figuras ao comparar os diferentes modos de controle de potência? e quanto a convergência do algoritmo?\n",
    "\n",
    "  * 12.2.\tFiguras 3 e 4: Considerando o Modo 1 do controle de potência, fazer os mesmos gráficos anteriores, mas para diferentes velocidades de usuários (um gráfico com três subtplots para 3kmph e outro para 120kmph). \n",
    "\n",
    "\tNo relatório, discutir as seguintes perguntas: O que pode ser concluído das figuras ao \tcomparar as diferentes velocidades? e quanto a convergência do algoritmo?\n",
    "\n",
    "  * 12.3.\tFigura 5: Fazer a figura acima com o Modo 1 de controle de potência, com usuários a 3kmph, e com a mudança para 100 usuários por célula. O que acontece com o comportamento dos modos de controle de potência? Se preciso, aumente o número de usuários para mostrar melhor o comportamento!\n",
    "\n",
    "  * 12.4.\tFigura 6: CDF da Eb/No média dos usuários da célula central para uma carga de 10 usuários de 3kmph por célula e todos os algoritmos de controle de potência (uma linha para cada algoritmo). Qual algoritmo tem melhor desempenho? qual a diferença de desempenho entre os três modos de controle de potência? Por exemplo, o formato da figura é similar a:\n",
    "   <p align=\"center\">\n",
    "  <img src=\"./FIGS/HD_05/CDF_SINR_PC.png\" width=\"500\"/>\n",
    "  </p>\n",
    " \n",
    "  * 12.5.\tFigura 7: CDF da potência de transmissão média dos usuários da célula central para uma carga de 10 usuários de 3kmph por célula e todos os algoritmos de controle de potência (uma linha para cada algoritmo). \n",
    "\n",
    "  * Discuta na apresentação e no vídeo: O que pode ser concluído das figuras? qual a relação entre os dois gráficos? \n",
    "\n",
    "  * 12.6.\tFigura 8: Média da Eb/No Média dos usuários a 3kmph vs a carga do sistema (cargas a serem testadas 10, 20, 30 e 50 usuários por célula). Usuários a 3kmph. Colocar todos os modos de controle de potência no mesmo gráfico (uma linha para cada algoritmo). O que pode ser concluído da figura? Por exemplo, o formato da figura é similar a:\n",
    "  <p align=\"center\">\n",
    "  <img src=\"./FIGS/HD_05/SINR_PC_USERSpng.png\" width=\"500\"/>\n",
    "  </p>\n",
    " \n",
    "  * 12.7.\tFigura 9: Para usuários a 3kmph, fazer o gráfico da eficiência energética definida como: a razão entre a Eb/No média e a potência de transmissão média de cada usuário. Faça o gráfico para uma carga de 10, 20, 30 e 50 usuários por célula e todos os algoritmos de controle de potência (uma linha para cada algoritmo). O que pode ser concluído da Figura? qual algoritmo tem melhor eficiência energética?\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.9.7 ('base')",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "name": "python",
   "version": "3.9.7"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "e42634819b8c191a5d07eaf23810ff32516dd8d3875f28ec3e488928fbd3c187"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
